'''
元素定位：
    -id定位，利用元素的id属性进行定位
        id属性的值理论上都是唯一的
    -name定位，利用元素的name属性进行定位
        name属性的值一般也是唯一的，但对于单选和多选时则不唯一
    -class_name定位，利用元素的class属性进行定位
        class属性的值一般不保证唯一性
        如果有多个元素满足定位条件，则系统默认返回第一个找到的元素
    -tag_name定位，利用元素的元素名进行定位
    -link_text定位，利用超链接元素的全部文本进行定位
    -partial_link_text定位，利用超链接元素的部分文本进行定位
    -xpath  
        利用元素的路径来定位元素
        /   绝对路径
        //  相对路径
        @   选取属性
        *   通配符
    -css_selector
        css是利用元素的路径和类属性的值来联合进行定位

'''

from selenium import webdriver

# 打开浏览器 - Chrome浏览器
driver = webdriver.Chrome()
# driver = webdriver.Firefox()

# 打开百度
driver.get('https://www.baidu.com')

'''id定位'''

# # 定位搜索框
# input = driver.find_element_by_id('kw')
# # 向搜索框中写入文本
# input.send_keys('Harmony OS')

# # 定位 百度一下 按钮
# btn = driver.find_element_by_id('su')
# # 单击 click()
# btn.click()

'''name'''
# # 定位搜索框
# driver.find_element_by_name('wd').send_keys('Harmony OS')

# # 定位 百度一下 按钮
# driver.find_element_by_id('su').click()

'''class'''
# # 定位搜索框
# driver.find_element_by_class_name('s_ipt').send_keys('Harmony OS')

# # 定位 百度一下 按钮
# driver.find_element_by_class_name('bg.s_btn').click()

'''tag_name'''
# # 定位搜索框
# driver.find_element_by_tag_name('input').send_keys('Harmony OS')

# # 定位 百度一下 按钮
# driver.find_element_by_tag_name('input').click()

'''link_text'''
# 点击 新闻
# driver.find_element_by_link_text('新闻').click()

'''partial_link_text'''
# 点击 换一换
# driver.find_element_by_partial_link_text('换一换').click()

'''xpath'''
# 绝对路径
# # 定位搜索框
# driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys('鸿蒙')

# # 定位 百度一下 按钮
# driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input').click()

# 相对路径
# 定位搜索框
# driver.find_element_by_xpath('//input[@maxlength="255"]').send_keys('鸿蒙')


# 定位 百度一下 按钮
# driver.find_element_by_xpath('//*[@value="百度一下"]').click()
'''多个定位条件连用'''
# driver.find_element_by_xpath('//*[@class="bg s_btn" and @type="submit"]').click()

# 点击 换一换
'''精确文本定位'''
# driver.find_element_by_xpath('//*[text()="换一换"]').click()
'''模糊文本定位'''
# driver.find_element_by_xpath('//*[contains(text(),"换")]').click()

'''
css_selector

css:
#hotsearch-content-wrapper > li:nth-child(6) > a > span.title-content-title
xpath:
//*[@id="hotsearch-content-wrapper"]/li[6]/a/span[2]
'''

driver.find_element_by_css_selector('#hotsearch-content-wrapper > li:nth-child(6) > a > span.title-content-title').click()
